在前幾篇的文章中,介紹了強化學習(Reinforcement Learning, RL)的基本概念和原理,也有介紹了Q-Learning。強化學習是一種機器學習方法,透過代理人與環境的互動,學習如何在不同情況下採取最佳行動以最大化累積獎勵。這種方法已被廣泛應用於遊戲、機器人控制和自動駕駛等領域。
在了解了強化學習的基礎之後,我們預計在接下來的幾天打造一個簡單的強化學習,我們會利用一個強大且易於使用的工具 —— Gymnasium。
所以這次我會介紹 Gymnasium 的功能和使用方法,並透過實例程式碼展示如何建立和操作一個強化學習環境。在未來的文章中,我們將進一步探討如何結合 Gymnasium 與 Q-learning,實現一個簡單但功能強大的強化學習代理人。
Gymnasium 是 OpenAI 開發的 Gym 庫的維護分支,它提供了豐富的強化學習環境,讓研究人員和開發者能夠輕鬆地測試和比較各種強化學習算法。
更詳細的資訊可以訪問他們的網站參考 Gymnasium。
還記得前幾天的圖片嗎,在gymnasium與環境互動的關係圖就像是這樣
pip install gymnasium
import gymnasium as gym
# 創建 FrozenLake-v1 環境,並設置顯示模式為 "human"
env = gym.make("FrozenLake-v1", render_mode="human")
# 重置環境,並設定隨機種子
observation, info = env.reset(seed=42)
# 執行 1000 步的模擬
for _ in range(1000):
# 這裡是插入你策略的地方,目前使用隨機動作
action = env.action_space.sample()
# 進行一步的模擬
observation, reward, terminated, truncated, info = env.step(action)
# 如果遊戲結束或截斷,重置環境
if terminated or truncated:
observation, info = env.reset()
# 關閉環境
env.close()
FrozenLake
來舉例的話他會返回
使用 env.action_space.sample() 隨機選擇一個動作。
使用 env.step(action) 進行一步模擬,返回新的觀察值、獎勵、是否終止、是否截斷及其他資訊。
如果環境終止(terminated)或截斷(truncated),則重置環境。
將整個程式運行起來可以看到可愛的人在上面奔跑的畫面
FrozenLake 是一個經典的強化學習環境,通常用於測試和比較各種強化學習算法。這個環境模擬了一個冰凍的湖面,其中代理(Agent)需要從起點(Start)移動到目標(Goal),同時避免掉入洞穴(Holes)中。
在 FrozenLake 環境中,動作的數值表示如下:
0:向左移動(Left)
1:向下移動(Down)
2:向右移動(Right)
3:向上移動(Up)
env.step(action)
模擬輸出可以看到
今天的介紹就先簡單到這裡,明天開始就會開始將前面所學的與今天的模擬串在一起囉!!! 希望大家可以跟著我一起實作,一起學習!!